perm filename TEST3.SAI[GEO,BGB]2 blob sn#081318 filedate 1974-01-15 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00003 PAGES 
RECORD PAGE   DESCRIPTION
 00001 00001
 00002 00002	BEGIN "TEST3"
 00003 00003		REAL VOLUME,VOLTMP
 00006 ENDMK
⊗;
BEGIN "TEST3"
	DEFINE α="COMMENT";DEFINE π="3.1415927";
	REQUIRE "GEOMES.HDR" SOURCE_FILE;

	EXTERNAL SIMPLE INTEGER PROCEDURE ICAM (STRING FILE);
	EXTERNAL SIMPLE REAL PROCEDURE DETERM (INTEGER Q);

	INTEGER B1,B2,F,E,V,V0,E0,T,I;
	INTEGER V1,V2,V3;
	INTEGER Q;
	REAL VOLUME,VOLTMP;
	REAL XMAX,YMAX,ZMAX;
	REAL XMIN,YMIN,ZMIN;
	GEONIT;
	B1 ← IGEM("HIP.GEM[GEM,BGB]");
	ICAM("TMP.CAM[GEM,BGB]");
	Q ← MKNODE(0);
	VOLUME ← 0;
	REAL VOLUME,VOLTMP;
	REAL XMAX,YMAX,ZMAX;
	REAL XMIN,YMIN,ZMIN;
α VERTEX SCAN FOR MINAMAX LOCI;
	XMAX ← YMAX ← ZMAX ← -1000;
	XMIN ← YMIN ← ZMIN ← +1000;
	V ← PVT(B1);
	DO BEGIN
		IF XWC(V) > XMAX THEN XMAX ← XWC(V);
		IF YWC(V) > YMAX THEN YMAX ← YWC(V);
		IF ZWC(V) > ZMAX THEN ZMAX ← ZWC(V);
		IF XWC(V) < XMIN THEN XMIN ← XWC(V);
		IF YWC(V) < YMIN THEN YMIN ← YWC(V);
		IF ZWC(V) < ZMIN THEN ZMIN ← ZWC(V);
	END UNTIL B1=(V←PVT(V));

	XMIN ← XMIN*12;	XMAX←XMAX*12;
	YMIN ← YMIN*12;	YMAX←YMAX*12;
	ZMIN ← ZMIN*12;	ZMAX←ZMAX*12;

	OUTSTR(9&"XMIN = "&CVG(XMIN)&9&"XMAX = "&CVG(XMAX)&13&10);
	OUTSTR(9&"YMIN = "&CVG(YMIN)&9&"YMAX = "&CVG(YMAX)&13&10);
	OUTSTR(9&"ZMIN = "&CVG(ZMIN)&9&"ZMAX = "&CVG(ZMAX)&13&10);

α FACE SCAN;
	F ← PFACE(B1);
	DO BEGIN 
		I←0;
		E0←PED(F); E←ECCW(E0,F);
		V1 ← VCW(E0,F);
		V2 ← VCCW(E0,F);
		V3 ← VCCW(E,F);
		IX(Q) ← XWC(V1);IY(Q) ← YWC(V1);IZ(Q) ← ZWC(V1);
		JX(Q) ← XWC(V2);JY(Q) ← YWC(V2);JZ(Q) ← ZWC(V2);
		KX(Q) ← XWC(V3);KY(Q) ← YWC(V3);KZ(Q) ← ZWC(V3);
		VOLUME ← VOLUME + DETERM(Q);
	END UNTIL B1=(F←PFACE(F));
	OUTSTR("TOTAL VOLUME = "&CVG(12*12*12*VOLUME/6)&13&10);
	INCHRW;
	GEODPY;
	WHILE TRUE DO INCHRW;
END "TEST3"; BGB 10 JANUARY 1974.